#!/usr/bin/python

# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.


import os


import bot
import bot_utils


utils = bot_utils.GetUtils()


HOST_OS = utils.GuessOS()


def ArchiveArtifacts(tarfile, builddir, channel):
  namer = bot_utils.GCSNamer(channel=channel)
  gsutil = bot_utils.GSUtil()
  revision = utils.GetArchiveVersion()
  # Archive the src tar to the src dir
  remote_tarfile = '/'.join([namer.src_directory(revision),
                             os.path.basename(tarfile)])
  gsutil.upload(tarfile, remote_tarfile, public=True)
  # Archive all files except the tar file to the linux packages dir
  for entry in os.listdir(builddir):
    full_path = os.path.join(builddir, entry)
    # We expect a flat structure, not subdirectories
    assert(os.path.isfile(full_path))
    if full_path != tarfile:
      package_dir = namer.linux_packages_directory(revision)
      remote_file = '/'.join([package_dir,
                              os.path.basename(entry)])
      gsutil.upload(full_path, remote_file, public=True)


if __name__ == '__main__':
  bot_name, _ = bot.GetBotName()
  channel = bot_utils.GetChannelFromName(bot_name)
  if channel != bot_utils.Channel.BLEEDING_EDGE:
    builddir = os.path.join(bot_utils.DART_DIR,
                            utils.GetBuildDir(HOST_OS),
                            'src_and_installation')
    version = utils.GetVersion()
    tarfilename = 'dart-%s.tar.gz' % version
    tarfile = os.path.join(builddir, tarfilename)
    ArchiveArtifacts(tarfile, builddir, channel)
  else:
    print 'Not uploading artifacts on bleeding edge'
